/*******************************************************************************************
 *  BulletRef.c
 *
 *  Creating and managing Bullet object strucutres.
 *
 *******************************************************************************************/







/*******************************************************************************************
 *  INCLUDES :
 *******************************************************************************************/

/* System and library related : */
#include <stdlib.h>
#include <string.h>

/* Project related : */
#include "BulletRef.h"







/*******************************************************************************************
 *  FUNCTIONS :
 *******************************************************************************************/

/*******************************************************************************************
 *  NEWBULLETREF : Creates an empty BulletRef object structure.
 *******************************************************************************************/
BulletRef *newBulletRef(void) {
	BulletRef *b;

	/* Creating the container structure : */
	b = (BulletRef *)malloc(sizeof(BulletRef));


	/* Setting the object's type : */
	b->otype = bulletRef;


	/* For now, the BulletRef has no parameters, so : */
	b->paramsNum = 0;
	

	/* Returning the still empty structure : */
	return b;

}




/*******************************************************************************************
 *  FREEBULLETREF : destroys a BulletRef object structure and all the objects it stores.
 *******************************************************************************************/
void freeBulletRef(BulletRef *b) {

	int i;							/* All purpose counter.                 */

	free(b->label);					/* Free the label char chain.           */

	for(i=0; i<b->paramsNum; i++)
		free(b->params[i]);			/* Free all the parameters char chains. */

	free(b);						/* Free the object itself.              */

}



/*******************************************************************************************
 *  SETBULLETREFLABEL : sets an bullet label.
 *******************************************************************************************/
void setBulletRefLabel(BulletRef *b, char *l) {
	
	if(l != NULL){
		b->label = malloc(MAX_LABEL_LENGTH);
		strcpy(b->label, l);
	}
	else
		b->label = NULL;

}



/*******************************************************************************************
 *  PUSHBULLETREFPARAM : pushes a new parameter on the bulletRef's parameters list :
 *******************************************************************************************/
void pushBulletRefParam(BulletRef *b, char *p) {
	strcpy(b->params[b->paramsNum], p);
	b->paramsNum++;
}
